package com.zb.service.impl;

import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zb.entity.ZjCodeSet;
import com.zb.mapper.ZjCodeSetMapper;
import com.zb.service.ZjCodeSetService;
import com.zb.vo.CodeSetVo;
import org.springframework.stereotype.Service;

import java.util.Objects;

/**
 * <p>
 * 编码设置表 服务实现类
 * </p>
 *
 * @author WEN
 * @since 2023-07-25
 */
@Service
public class ZjCodeSetServiceImpl extends ServiceImpl<ZjCodeSetMapper, ZjCodeSet> implements ZjCodeSetService {

    // 初始化 或 恢复初始化编码设置
    @Override
    public void initOrRestoreDefaultCodeSet(Long custAccId) {
        ZjCodeSet set = new ZjCodeSet();
        set.setId(custAccId);
        set.setRuleType(1);
        set.setCodePrefix("FM");
        set.setCodeRule("1,2");
        set.setTemporaryPrefix("LS");
        set.setTemporRule("1,2");
        set.setEnableStorehouseCode(true);
        set.setStorehousePrefix("ST");
        set.setStorehouseRule("1,2");
        set.setEnableImport(true);
        set.setImportPrefix("IM");
        set.setBatchPrefix("BT");
        this.saveOrUpdate(set);
    }

    // 获取编码设置
    @Override
    public CodeSetVo getCodeSet(Long custAccId) {
        ZjCodeSet codeSet = this.getById(custAccId);
        return CodeSetVo.beanToVo(codeSet);
    }

    // 保存编码设置
    @Override
    public void saveCodeSet(CodeSetVo codeSetVo) {
        Assert.isTrue(Objects.equals(1, codeSetVo.getRuleType()), "编码规则类型参数不合法", null);
        Assert.isTrue(CodeSetVo.checkRule(codeSetVo.getCodeRule()), "编码规则参数不合法！", null);
        Assert.isTrue(CodeSetVo.checkRule(codeSetVo.getTemporRule()), "临时编码规则参数不合法！", null);
        Assert.isTrue(CodeSetVo.checkRule(codeSetVo.getStorehouseRule()), "仓库编码规则参数不合法！", null);

        ZjCodeSet codeSet = CodeSetVo.voToBean(codeSetVo);
        this.updateById(codeSet);
    }

}
